Motion estimation is an effective inter-frame coding technique to exploit temporal redundancy in video sequences. Motion-compensated inter-frame coding has been widely used in various international video coding standards. The motion estimation adopted in various coding standards is often a block-based technique, where motion information such as coding mode and motion vector is determined for each macroblock or similar block configuration. In addition, intra coding is also adaptively applied, where the picture is processed without reference to any other picture. The inter-predicted or intra-predicted residues are usually further processed by transformation, quantization, and entropy coding to generate compressed video bitstream.
Block matching is an efficient means to determine displacement between two temporal pictures, where the content movement between two temporal pictures is determined on a block by block basis. For example, block-based motion estimation has been used in coding standards such as Advanced Video Coding (AVC)/H.264 and the new High Efficiency Video Coding (HEVC). For example, in HEVC, the motion prediction is performed based on a prediction unit (PU). The displacement between the two corresponding blocks in two temporal pictures is defined as motion vector (MV). In 3D video coding, if the reference picture is a coded picture from a different view, the displacement is called disparity vector (DV). Without loss of generality, the displacement can be referred to as a MV in this disclosure.
The assumption of block-based motion compensation is that all the pixels within a block undergo the same displacement and have the same MV. However, in a typical video sequence, such translational movement can hardly accurately describe the complex real movement in the contents. Therefore, the block-based motion estimation can't capture complex motion, such as rotation, zooming, and the deformation of moving objects. It is very desirable to develop motion estimation that is capable of deriving motion information for video units smaller than a whole block.